import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.utils import formataddr  # 添加这行导入 formataddr 函数

def send_email(sender_email, sender_password, receiver_email, subject, content):
    """
    通过 QQ 邮箱 SMTP 服务器发送邮件

    参数:
    sender_email: 发件人 QQ 邮箱地址
    sender_password: 发件人邮箱授权码
    receiver_email: 收件人邮箱地址
    subject: 邮件主题
    content: 邮件正文内容
    """
    # 创建一个带附件的邮件实例
    message = MIMEMultipart()

    # 设置发件人信息，格式为 "显示名称 <邮箱地址>"
    sender_name = sender_email.split('@')[0]  # 使用邮箱前缀作为显示名称
    message['From'] = formataddr((str(Header(sender_name, 'utf-8')), sender_email))

    message['To'] = Header(receiver_email, 'utf-8')
    message['Subject'] = Header(subject, 'utf-8')

    # 添加邮件正文
    message.attach(MIMEText(content, 'plain', 'utf-8'))

    try:
        # 创建 SMTP 对象并连接到 QQ 邮箱 SMTP 服务器
        smtp_obj = smtplib.SMTP_SSL('smtp.qq.com', 465)

        # 登录发件人邮箱
        smtp_obj.login(sender_email, sender_password)

        # 发送邮件
        smtp_obj.sendmail(sender_email, receiver_email, message.as_string())

        print("邮件发送成功")
    except smtplib.SMTPException as e:
        print(f"邮件发送失败: {e}")
    finally:
        # 关闭 SMTP 连接
        if smtp_obj:
            smtp_obj.quit()


def send_email2(content) :
    # 发件人邮箱
    sender_email = "1377231006@qq.com"  # 替换为你的 QQ 邮箱地址
    # 发件人邮箱授权码，非邮箱密码
    sender_password = "pblnytpebroxfgad"  # 替换为你的邮箱授权码

    # 收件人邮箱，可以是多个收件人
    receiver_email = "ryonwen456@gmail.com"  # 替换为收件人邮箱

    # 邮件主题
    subject = "Python 邮件测试"

    # 发送邮件
    send_email(sender_email, sender_password, receiver_email, subject, content)

# 使用示例
if __name__ == "__main__":
    # 发件人邮箱
    sender_email = "1377231006@qq.com"  # 替换为你的 QQ 邮箱地址
    # 发件人邮箱授权码，非邮箱密码
    sender_password = "pblnytpebroxfgad"  # 替换为你的邮箱授权码

    # 收件人邮箱，可以是多个收件人
    receiver_email = "ryonwen456@gmail.com"  # 替换为收件人邮箱

    # 邮件主题
    subject = "Python 邮件测试"

    # 邮件正文
    content = """
    这是一封使用 Python 发送的测试邮件。
    如果你收到了这封邮件，说明发送成功！
    """

    # 发送邮件
    send_email(sender_email, sender_password, receiver_email, subject, content)